# 使用官方 Go 镜像作为构建环境
FROM golang:1.24-alpine AS builder

# 设置工作目录
WORKDIR /app

# 设置 Go 模块代理
RUN go env -w GOPROXY=https://goproxy.cn,direct

# 复制 Go 模块文件
COPY go.mod .
COPY go.sum .

# 下载依赖
RUN go mod download

# 清理模块缓存
RUN go clean -modcache
RUN go mod tidy

# 复制源代码
COPY . .

# 构建可执行文件
RUN CGO_ENABLED=0 GOOS=linux go build -a -o main .

# 使用 Alpine 作为基础镜像
FROM alpine:latest

# 设置工作目录
WORKDIR /app

# 复制构建的可执行文件
COPY --from=builder /app/main .

# 暴露端口
EXPOSE 8080

ENV GIN_MODE=release

# 启动应用程序
ENTRYPOINT ["./main"]